﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using Baseball.Infrastructure;
using Baseball.Repositories;
using Baseball.Models;

namespace Baseball.Views
{
    public partial class Main : PhoneApplicationPage
    {
        GameRepository GameRepo = new GameRepository();

        public Main()
        {
            InitializeComponent();
            Initialize();
        }

        void Initialize()
        {
            // 오늘 경기 목록을 받아와 GameListBox에 바인딩
            ShowGames(DateTime.Today);
        }

        async void ShowGames(DateTime? Date)
        {
            // 다운로드 시작을 알리고
            this.GenerateIndicator("게임 목록을 다운로드하고 있습니다..");

            try
            {
                GameListBox.ItemsSource = null;

                // GameListBox에 다운로드 내용을 바인딩
                GameListBox.ItemsSource = await GameRepo.GetGames(Date);
            }
            catch
            {
                // 인터넷에 연결이 되어 있지 않으면 오류 발생
                MessageBox.Show("게임 목록을 다운로드하는 도중 오류가 발생했습니다. 휴대폰이 인터넷에 연결되었는지 확인해 주세요.");
            }
            finally
            {
                this.HideIndicator();
            }
        }

        #region Event Handlers

        private void Panorama_SelectionChanged(object sender, SelectionChangedEventArgs args)
        {
        }

        private void GameDatePicker_ValueChanged(object sender, DateTimeValueChangedEventArgs e)
        {
            ShowGames(((DatePicker)sender).Value);
        }

        #endregion
    }
}